package com.nd.android.musicboxlibrary.util;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * 配置项管理类
 * 
 * @author jiaolei
 */
public final class ConfigHelper {

    private static String PREF_NAME = "Event_Preferences";

    private static ConfigHelper mInstance = null;

    protected SharedPreferences mSettings;

    protected SharedPreferences.Editor mEditor;

    public static String CONFIG_KEY_UID = "uid";

    public static String CONFIG_KEY_SID = "sid";

    public static final String CONFIG_KEY_SEARCH_HISTORY = "search_history";

    public static final String CONFIG_KEY_AUTO_DOWNLOAD = "auto_download";

    public static final String CONFIG_KEY_TAB_INDEX = "tab_index";

    public static final String CONFIG_KEY_LIST_SUM = "list_sum_";

    public static String CONFIG_LRC_UTF = "utf";
    /**
     * 
     * Created 2014年9月11日 下午11:20:34
     * @param  context Context
     * @return ConfigHelper
     * @author wat.ztag
     */
    public static ConfigHelper getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new ConfigHelper(context.getApplicationContext());
        }
        return mInstance;
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:38
     * 
     * @param key String
     * @return String
     * @author wat.ztag
     */
    public String loadKey(String key) {
        key = getKeyBuyUid(key);
        return mSettings.getString(key, "");
    }

    /**
     * 根据Uid获取Key Created 2014年10月28日 下午17:20:41
     * 
     * @param key String
     * @return String
     * @author zxq
     */
    private String getKeyBuyUid(String key) {
        if (!CONFIG_KEY_UID.equals(key)) {
            key = key + "_" + loadKey(CONFIG_KEY_UID);
        }
        return key;
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:41
     * 
     * @param key String
     * @param value String
     * @author wat.ztag
     */
    public void saveKey(String key, String value) {
        key = getKeyBuyUid(key);
        mEditor.putString(key, value);
        mEditor.commit();
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:05
     * 
     * @param key String
     * @author wat.ztag
     */
    public void removeKey(String key) {
        mEditor.remove(getKeyBuyUid(key));
        mEditor.commit();
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:10
     * 
     * @author wat.ztag
     */
    public void clearkeys() {
        mEditor.clear();
        mEditor.commit();
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:13
     * 
     * @param key String
     * @param defValue boolean
     * @return boolean
     * @author wat.ztag
     */
    public boolean loadBooleanKey(String key, boolean defValue) {
        key = getKeyBuyUid(key);
        return mSettings.getBoolean(key, defValue);
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:15
     * 
     * @param key String
     * @param value boolean
     * @author wat.ztag
     */
    public void saveBooleanKey(String key, boolean value) {
        key = getKeyBuyUid(key);
        mEditor.putBoolean(key, value);
        mEditor.commit();
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:18
     * 
     * @param key String
     * @param defValue boolean
     * @return int
     * @author wat.ztag
     */
    public int loadIntKey(String key, int defValue) {
        key = getKeyBuyUid(key);
        return mSettings.getInt(key, defValue);
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:20
     * 
     * @param key String
     * @param value int
     * @author wat.ztag
     */
    public void saveIntKey(String key, int value) {
        key = getKeyBuyUid(key);
        mEditor.putInt(key, value);
        mEditor.commit();
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:24
     * 
     * @param key String
     * @param defValue long
     * @return long
     * @author wat.ztag
     */
    public long loadLongKey(String key, long defValue) {
        return mSettings.getLong(getKeyBuyUid(key), defValue);
    }

    /**
     * 
     * <br>
     * Created 2014年9月11日 下午11:20:27
     * 
     * @param key String
     * @param value long
     * @author wat.ztag
     */
    public void saveLongKey(String key, long value) {
        key = getKeyBuyUid(key);
        mEditor.putLong(key, value);
        mEditor.commit();
    }

    /**
     * Creates a new instance of ConfigHelper. <br>
     * Created 2014年9月11日 下午11:20:29
     * 
     * @param c Context
     */
    private ConfigHelper(Context c) {
        mSettings = c.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
        mEditor = mSettings.edit();
    }
}
